package file;

import java.io.File;
import java.io.IOException;
import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 74646
 * Date: 2022-06-24
 * Time: 14:36
 */

// 实现查找文件并删除
public class Demo16 {
    public static void main(String[] args) {
        // 1. 先输入要扫描的目录，以及要删除的文件名
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要扫描的路径：");
        String rootDirPath = sc.next();
        System.out.println("请输入要删除的文件名");
        String toDeleteName = sc.next();

        // 判断路径是否正确
        File rootDir = new File(rootDirPath);
        if(!rootDir.isDirectory()){
            System.out.println("输入的扫描错误！");
            return;
        }
        // 2. 遍历目录，把指定目录中的所有子目录和文件都遍历一遍，从而找到要删除的文件
        //      通过 scaDir 方法实现递归遍历并删除的操作
        scanDir(rootDir,toDeleteName);
    }

    private static void scanDir(File rootDir, String toDeleteName) {
        // 1. 先列出 rootDir 中都有哪些内容
        File[] files = rootDir.listFiles();
        // 如果目录为空则表示没有要删除的文件，直接返回
        if(files == null){
            return;
        }
        // 2. 遍历当前列出的内容，如果是普通文件就检测文件名是否是要删除的文件
        //     如果是目录，则进行递归遍历
        for (File f : files){
            if(f.isFile()){
                // 普通文件的情况
                if(f.getName().contains(toDeleteName)){
                    // 只要文件名中包含了关键字，就进行删除
                    deleteFile(f);
                }
            }else if(f.isDirectory()){
                // 如果是目录，就进行递归遍历
                scanDir(f,toDeleteName);
            }
        }
    }

    private static void deleteFile(File f) {
        try {
            System.out.println("是否要删除文件(y/n)："+f.getCanonicalPath());
            Scanner sc = new Scanner(System.in);
            String choice = sc.next();
            if(choice.equals("Y") || choice.equals("y")){
                f.delete();
                System.out.println("文件删除成功");
            }else{
                System.out.println("文件删除失败");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
